package cn.springcloud.api.reflect;

import cn.springcloud.api.model.User;


import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigInteger;
import java.security.ProtectionDomain;
import java.util.Arrays;


public class reflect {

    public static void main(String[] args) throws Exception {
        //Class<?> userClass = Class.forName("cn.springcloud.api.model.User");
        Class<User> userClass = User.class;

//        //类中的注解
//        Annotation[] annotations = userClass.getAnnotations();
//        System.err.println("annotations:"+ Arrays.toString(annotations));
//
//        //类的名字
//        String name = userClass.getName();
//        System.err.println("类的name:"+name);
//
//        //构造方法
//        Constructor<?>[] constructors = userClass.getConstructors();
//        System.err.println("constructors.length:"+ constructors.length);
//        System.err.println("constructors:"+ Arrays.toString(constructors));
//
//        //类中的方法
//        Method[] methods = userClass.getMethods();
//        System.err.println("类中的方法:"+ Arrays.toString(methods));
//
//        //获取类的保护域
//        ProtectionDomain protectionDomain = userClass.getProtectionDomain();
//        System.err.println("类的保护域protectionDomain:"+protectionDomain);
//
//        //类中的所有属性
//        Field[] declaredFields = userClass.getDeclaredFields();
//        System.err.println("declaredFields.length:"+declaredFields.length);
//        System.err.println("declaredFields:"+ Arrays.toString(declaredFields));
//        //实例
//        User user = userClass.newInstance();
//        System.err.println(user.toString());

        Constructor<User> constructor =  userClass.getConstructor(BigInteger.class, String.class);
        System.err.println(constructor);


    }















}
